﻿-- =============================================
-- Author:		<Author,徐福龙>
-- Create date: <Create Date,2012 03 01>
-- Description:	<Description,报销申请列表、一二级审核列表 应用于列表显示>
-- =============================================
CREATE PROCEDURE [dbo].[proc_L_Reimbursement_GetList_App]
(
		@CompanyId nvarchar(500),
		@DepartmentId int,
		@StateId int,
		@StartDate nvarchar(10),
		@EndDate nvarchar(10),
		@EName nvarchar(50),
		@StartIndex int,
		@EndIndex int,
		@Type INT,
		@PZPerson nvarchar(50)
)
AS
BEGIN

SET NOCOUNT ON;
--查询条件 
Declare @str VARCHAR(500),@strsql VARCHAR(5000)
SET @str=''
--1.公司
IF @CompanyId <>'' AND @CompanyId <>'0'
BEGIN
	SET @str='  [CompanyId] in ('+@CompanyId+') and '
END
--2.部门
IF @DepartmentId <>0
BEGIN
	Declare @bmbh_T  varchar(20)
	Select @bmbh_T=bmbh From department Where id=@DepartmentId
	SET @str=@str+' DepartmentId in (Select Id From department Where Left(bmbh,Len('''+@bmbh_T+'''))='''+@bmbh_T+''') and '
END
--3.申请人
IF @EName<>''
BEGIN
	SET @str=@str+' ( EName like ''%'+@EName+'%''  or Summary like ''%'+@EName+'%'') and '
END
-- 
IF @PZPerson<>''
BEGIN
	SET @str=@str+' ( PZPerson = '''+@PZPerson+''' or SHPerson='''+@PZPerson+''') and '
END

--4.申报审批状态  (flag: -1,驳回 0,未审批 1,通过 2,全部)
IF @Type=0 and  @StateId <>2 
BEGIN
	SET @str=@str+'  flag='+convert(varchar,@StateId)+'  and '
END
--4.1.一级审批状态  (PZflag: -1,驳回 0,未审批 1,通过 2,全部 驳回不参与查询) 
IF  @Type=1
BEGIN
	IF @StateId <>2  
	BEGIN
	SET @str=@str+'  flag<>-1 and PZflag='+convert(varchar,@StateId)+'  and '
	END
	else
	BEGIN
	SET @str=@str+'  flag<>-1 and ( PZflag=0 or PZflag=1 )  and '
	END
END
--4.2.二级审批状态  (PZflag1: -1,驳回 0,未审批 1,通过 2,全部 驳回不参与查询) 
IF  @Type=2
BEGIN
	IF @StateId <>2  
	BEGIN
	SET @str=@str+' flag<>-1 and PZflag=1  and   PZflag1='+convert(varchar,@StateId)+'  and '
	END
	else
	BEGIN
	SET @str=@str+' flag<>-1 and PZflag=1  and   ( PZflag1=0 or PZflag1=1 )  and '
	END
END

--5.起始日期 结束日期
IF @StartDate <>'' and @EndDate<>''
BEGIN
	SET @str=@str+'  Convert(nchar(10),lrrq,120) between '''+convert(varchar,@StartDate)+''' and  '''+convert(varchar,@EndDate)+''' and '
	--and Convert(nchar(10),lrrq,120) between @StartDate and @EndDate
END

IF @str <>''
BEGIN
	SET @str=' where '+substring(@str,0,len(@str)-3)
END


SET @strsql=
'
;WITH list as (
SELECT 
ROW_NUMBER() OVER (ORDER BY flag,PZflag,PZflag1,ID DESC ) AS Row
	,[id]

	--	摘要
	,[Summary]
	--	单位ID
	--,[CompanyId]
	--	单位名称      
	,[CompanyName]
	--	部门ID
	--,[DepartmentId]
	--	部门名称      
	,[DepartmentName]
	--	申请人ID
	--,[ENameId]
	--	申请人姓名   
	,[EName]
	--	申请金额
	,[Money]

	--	审批标识（0：未审，1：通过，-1：驳回）
	,ISNULL([PZflag],0) as PZflag
	--	批准人编号(要报销人的上级领导)
	--,[PZPerson]
	--	批准人姓名(要报销人的上级领导)
	--,[PZPersonName]
	--	审批意见(要报销人的上级领导)
	--,[PZYJ]
	--	审批日期(要报销人的上级领导)
	--,[PZRQ]
	--	审批标识（0：未审，1：通过，-1：驳回）
	,ISNULL([PZflag1],0) as PZflag1
	--  批准人编号(整个事件上级领导)
	--,[PZPerson1]
	--  批准人姓名(整个事件上级领导)
	--,[PZPersonName1]
	--  审批意见(整个事件上级领导)
	--,[PZYJ1]
	--  审批日期(整个事件上级领导)
	--,[PZRQ1]
	--  财务确认标志（0：未确认，1：确认通过，-1：驳回）
	,ISNULL([SHflag],0) as SHflag
	--  财务审核人编号
	--,[SHPerson]
	--  财务审核人姓名
	--,[SHPersonName]
	--  财务审核意见
	--,[SHYJ]
	--  财务审核日期
	--,[SHRQ]
	--  备注
	--,[Memo]

	--	录入日期
	,[lrrq]
	--  录入人编号（经办人）
	--,[userid]
	--  录入人姓名（经办人）
	--,[username]
	--  还款类别（1：现金，2：支票，3：借条）
	--,[HKflag]
	--  还款金额（当类别为现金和支票时）
	--,[HKJE]
	--  关联的借条ID(还款)
	--,[HKLoanId]
	--  负款标识（0：无负款，1：现金，2：支票，3：借条）
	--,[FKflag]
	--  负款金额（当负款为现金或支票时填）
	--,[FKJE]
	--  负款对应的借条ID
	--,[FKLoanId]

	--	审批标识（0：未审，1：通过，-1：驳回）
	,ISNULL([flag],0) as flag

FROM [L_Reimbursement] L
'+@str+'
)

Select *,(Select Count(0)  FROM list ) AS Count_Sum ,(Select SUM(Money)  FROM list ) AS Count_Money
From list
Where Row between '+convert(varchar(10),@StartIndex)+' and '+convert(varchar(10),@EndIndex)+'
'
	EXEC (@strsql)
	--PRINT (@strsql)

SET NOCOUNT OFF;
END
